import Blob "mo:base/Blob";
import Text "mo:base/Text";
import Principal "mo:base/Principal";
import Trie "mo:base/Trie";
import Hash "mo:base/Hash";
import HashMap "mo:base/HashMap";
import Array "mo:base/Array";


actor {
  // 用于存储图片数据的映射表
  // 假设 key 是图片的唯一标识符，value 是图片的二进制数据
  var image_map = HashMap.HashMap<Text, Blob>(
        10, 
        Text.equal, 
        Text.hash
  );

  // 添加图片的函数
  public shared ({ caller }) func uploadImage(fileData  : Blob) : async Text {
    
    // 检查图片大小
    // let size = Array.size(fileData);
    // if (size > 2_000_000) { // 限制为 2MB
    //     return "Error: File size exceeds 2MB.";
    // };

    let principal_id = Principal.toText(caller);
    image_map.put(principal_id,fileData);

    // // 返回可访问的URL（假设使用默认域名）
    let canister_id : Text = "hhhhhh";
    
    // images := Trie.put<Text, Blob>(images, principal_id, eqKey, data);
    // let hash = Blob.hash(data);
    // let name = hash.toText();
    return "https://" # canister_id # ".ic0.app/images/---principal_id:" # principal_id;
  };

  public query func greet(name : Text) : async Text {
    return "Hello, " # name # "!";
  };

  // // 上传图片接口
  // public shared func uploadImage(fileData : Blob) : async Text {
  //     // 检查图片大小
  //     if (Blob.size(fileData) > 2_000_000) { // 限制大小为 2MB
  //         return "Error: File size exceeds 2MB.";
  //     };

  //     // 模拟存储图片 (推荐存储到 IPFS，这里省略具体上传到 IPFS 的逻辑)
  //     let hash = Blob.hash(fileData);
  //     images := images # [(hash, fileName)];
  //     return "Image uploaded successfully. Hash: " # hash.toText();
  // };

  // // 获取已上传的图片元数据
  // public query func listImages() : async [(Text, Text)] {
  //     return images.map(((hash, name)) -> (hash.toText(), name));
  // };
  


};
